from __future__ import absolute_import, unicode_literals
import os
from django.conf import settings
from celery import Celery
from kombu import Queue, Exchange

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'webservices.settings')


class MyRouter(object):
    @staticmethod
    def route_for_task(self, task, *args, **kwargs):
        return {'queue': 'maestro', 'routing_key': 'maestro'}


QUEUES = (
    Queue('maestro', Exchange('maestro'), routing_key='maestro'),
)


app = Celery('async', broker=settings.ASYNC_LOG_REDIS)
app.conf.update(CELERY_QUEUES=QUEUES,
                CELERY_ROUTES=(MyRouter(),))

# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings')

# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))
